package aventuraespacial;

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.geom.AffineTransform;


/**
 * @author  woodoo
 */
public class BalaFuego extends Bala{
	
	static final int ANCHO_BALA=9;
	static final int ALTO_BALA=9;
	/**
	 * @uml.property  name="rANGO"
	 */
	static final int RANGO=5;
	static final String NOMBRE_BALA="balaSimple.png";
	static final String NOMBRE_ICONO_BALA="iconoBalaSimple.png";
	/******************* CONSTRUCTOR DE BALA FUEGO ******************/
    public BalaFuego(double x, double y, double velocidad, double angulo){
        
        super(x,y,velocidad,angulo);
        this.setForma(new Rectangle(ANCHO_BALA,ALTO_BALA));
        this.setImagen(cargarImagen(NOMBRE_BALA));
    }
    
    
    /***************************** GETTERS *********************************/
    
    @Override
	public int getAlto() {		
		return ALTO_BALA;
	}

	@Override
	public int getAncho() {		
		return ANCHO_BALA;
	}
    
    /************************* IMPLEMENTACION DE METODOS*************************/
    @Override
    public boolean fueraDePantalla() {      
        
        
    	if (this.x<(0) || this.x> (EspacioExterior.ANCHO_PANTALLA) ) return true;
        else if ( this.y< (0) || this.y> (EspacioExterior.ALTO_PANTALLA)) return true;
            else return false;
    }

    @Override
    public Bala identidad() {
    	return new BalaFuego(this.x,this.y,this.velocidad,this.angulo);
    }


	@Override
	public Rectangle getBordes() {
		int mitadAncho= (int) (ANCHO_BALA/2 );
		int mitadAlto=(int) (ALTO_BALA/2) ;
		return new Rectangle((int)this.getX()-mitadAncho,(int)this.getY()-mitadAlto,ANCHO_BALA,ALTO_BALA);
		
	}

	@Override
	public void guardarseEnNave(Nave nave) {			
		nave.agregarBala(this);
	}
	
	
	@Override
	public void establecerModeloNave(Nave nave) {
		if(nave.getModeloBala().getRango()<this.getRango()){
			nave.setModeloBala(this);
		}
		
	}
	
	@Override
	public void impactarCon(ObjetoEspacial obj) {
		obj.setVivo(false);
		this.setVivo(false);		
	}
	
	/**
	 * @return
	 * @uml.property  name="rANGO"
	 */
	@Override
	public int getRango() {
			return	RANGO;	
	}
	
	@Override
	public void dibujar(Graphics2D g) {
		AffineTransform identidad= new AffineTransform();
		AffineTransform trans= new AffineTransform();
		//DIBUJO EL CONTORNO
		if(ObjetoEspacial.isBordesActivados()){
			g.setTransform(identidad);
			g.setColor(Color.WHITE);
			g.draw(getBordes());
		}
		//MUESTRO LA IMAGEN
		trans.setTransform(identidad);
		trans.translate(x-(ANCHO_BALA/2), y-(ALTO_BALA/2));
		trans.scale(3,3);
		g.drawImage(getImagen(),trans,null);
		
		
		
	}


	@Override
	public String getNombreIcono() {
		
		return NOMBRE_ICONO_BALA;
	}
	
    
    
}